#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <time.h>
#include <stdlib.h>
#if 0
标准IO 的打开和关闭

1.打开文件
       #include <stdio.h>

       FILE *fopen(const char *path, const char *mode);
函数作用：打开或者创建一个文件
参数：
       path：文件的路径名  
       mode：文件的打开模式  ，你要什么方式进行打开文件  

        r      打开文本文件，用于读。流被定位于文件的开始。 要求文件必需存在
        r+     打开文本文件，用于读写。流被定位于文件的开始。要求文件必需存在
        w      创建文件 如果文件存在 则清空  权限是写入
        w+     创建文件 如果文件存在 则清空  权限是读和写
        a      打开文件，用于追加 (在文件尾写)。如果文件不存在就创建它。流被定位于文件的末尾。
        a+     打开文件，用于追加 (在文件尾写)。如果文件不存在就创建它。读文件的初始位置是文件的开始，但是输出总是被追加到文件的末尾。

返回值：
        成功返回  文件指针  文件的代号 ，实际上就是返回 该文件在内核空间中的文件结构体的地址
        失败返回  NULL
    


#endif 

int main()
{
    //1 打开文件
    //a+ 文件不存在则创建  写入数据的时候会定位到文件末尾  也就是追加写入数据
    //如果是读取数据呢，那么会从开头读取 
    //b 代表打开文件的时候，以二进制的方式打开 如果是在linux系统中 b可以忽略它
    FILE* fp = fopen("1.txt","ab+");
    if(fp == NULL)
    {
        perror("fopen error");
        return -1;
    }
    printf("文件指针 所对应的文件描述符:%d\n",fp->_fileno);

    // int ret = write(fp->_file,"123456",6);
    // printf("ret = %d\n",ret);

    char buf[1024] = {0};
    int ret = read(fp->_fileno,buf,sizeof(buf));
    printf("ret = %d,buf:%s\n",ret,buf);

    //关闭文件
    fclose(fp);

    return 0;
}